約 3,112,345 件
https://w.atwiki.jp/mod-jplang/pages/93.html
MC1.6.4 最新版(Comapct Solars-4.4.21.306)の日本語langファイルです tile.compactsolars HV_block.name=高圧ソーラーアレイ tile.compactsolars MV_block.name=中圧ソーラーアレイ tile.compactsolars LV_block.name=低圧ソーラーアレイ item.compactsolars solarHatHV.name=高圧ソーラーヘルメット item.compactsolars solarHatMV.name=中圧ソーラーヘルメット item.compactsolars solarHatLV.name=低圧ソーラーヘルメット コメント コメント欄の運営・編集方針に関してはコメント欄方針を参照してください。 このコメント欄はwikiの情報充実のため、追記がしやすいよう設けた物なので、編集が苦手な方は以下のコメントフォームへ書き込んでください。後に編集者が追記等をします。 表示される親コメには限りがあります。返信の際は返信したいコメント横のチェックを付けて返信するようご協力お願いします。 コメログ:工業系modアドオン/IC2add/compsolars/MC1.6.4 名前 バージョン選択に戻る トップページに戻る
https://w.atwiki.jp/mosya06/pages/18.html
導入MOD/Bukkitサーバプラグイン クライアントMOD AudioMod ThebombzenAPI-v1.1.1-mc1.4.2 MinecraftForge-universal-6.0.1.349 NihongoMOD1.4.2 EnchantView-v3.6.0-mc-1.4.2 Bukkitプラグイン WorldGuard WorldEdit Dynmap AutoSave Lift Tombstone EnchantView1.2.3 必ずお読みくださいへ戻る
https://w.atwiki.jp/akasatanahama/pages/102.html
概要 MOBを追加する。 今回は、匠型のMOBを追加する。 ソースコード AluminiumMod.java +長いので囲みます package tutorial.aluminiummod; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.EnumCreatureType; import net.minecraft.item.Item; import net.minecraft.world.biome.BiomeGenBase; import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.registry.EntityRegistry; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @Mod(modid = "AluminiumMod", name = "Aluminium Mod", version = "1.0.0") public class AluminiumMod { //追加するアイテムの宣言 public static Item aluminiumEgg; @EventHandler public void perInit(FMLPreInitializationEvent event) { //Itemのインスタンスを生成し、代入する aluminiumEgg = new ItemAluminiumEgg() //クリエイティブタブの登録 .setCreativeTab(CreativeTabs.tabMaterials) //システム名の登録 .setUnlocalizedName("aluminiumEgg") //テクスチャ名の登録 .setTextureName("aluminiummod aluminiumEgg"); //GameRegistryへの登録 GameRegistry.registerItem(aluminiumEgg, "aluminiumEgg"); } @EventHandler public void init(FMLInitializationEvent event) { //Entityを登録する EntityRegistry.registerModEntity(EntityAluminiumCreeper.class, "AluminiumCreeper", 0, this, 250, 1, false); //Entityの自然スポーンを登録する EntityRegistry.addSpawn(EntityAluminiumCreeper.class, 20, 1, 4, EnumCreatureType.creature, BiomeGenBase.plains); /*EntityのRenderを登録する *Client側でのみ登録するため、今回はif文で処理をする。*/ if(FMLCommonHandler.instance().getSide() == Side.CLIENT) { this.render(); } } @SideOnly(Side.CLIENT) public void render() { RenderingRegistry.registerEntityRenderingHandler(EntityAluminiumCreeper.class, new RenderAluminiumCreeper()); } } EntityAluminiumCreeper.java +長いので囲みます package tutorial.aluminiummod; import net.minecraft.block.material.Material; import net.minecraft.entity.EnumCreatureAttribute; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.EntityAIAttackOnCollide; import net.minecraft.entity.ai.EntityAIAvoidEntity; import net.minecraft.entity.ai.EntityAIHurtByTarget; import net.minecraft.entity.ai.EntityAILookIdle; import net.minecraft.entity.ai.EntityAINearestAttackableTarget; import net.minecraft.entity.ai.EntityAISwimming; import net.minecraft.entity.ai.EntityAIWander; import net.minecraft.entity.ai.EntityAIWatchClosest; import net.minecraft.entity.monster.EntityMob; import net.minecraft.entity.passive.EntityOcelot; import net.minecraft.entity.passive.EntityPig; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.stats.AchievementList; import net.minecraft.util.ChatComponentText; import net.minecraft.util.DamageSource; import net.minecraft.world.World; public class EntityAluminiumCreeper extends EntityMob { public EntityAluminiumCreeper(World world) { super(world); /*EntiyのAIを登録する*/ this.tasks.addTask(1, new EntityAISwimming(this)); this.tasks.addTask(2, new EntityAIAttackOnCollide(this, EntityPig.class, 1.0D, false)); this.tasks.addTask(2, new EntityAIAvoidEntity(this, EntityOcelot.class, 6.0F, 1.0D, 1.2D)); this.tasks.addTask(3, new EntityAIAttackOnCollide(this, EntityPlayer.class, 1.0D, false)); this.tasks.addTask(4, new EntityAIWander(this, 0.8D)); this.tasks.addTask(5, new EntityAIWatchClosest(this, EntityPlayer.class, 8.0F)); this.tasks.addTask(6, new EntityAILookIdle(this)); this.targetTasks.addTask(1, new EntityAINearestAttackableTarget(this, EntityPig.class, 1,false)); this.targetTasks.addTask(2, new EntityAINearestAttackableTarget(this, EntityPlayer.class, 1, true)); this.targetTasks.addTask(2, new EntityAIHurtByTarget(this, false)); } /**MOBの速度やHPを変更するメソッド*/ @Override protected void applyEntityAttributes() { super.applyEntityAttributes(); this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.5D); this.getEntityAttribute(SharedMonsterAttributes.followRange).setBaseValue(128D); this.getEntityAttribute(SharedMonsterAttributes.knockbackResistance).setBaseValue(100D); this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(1.5D); } /**MOBの属性を返すメソッド*/ @Override public EnumCreatureAttribute getCreatureAttribute() { return EnumCreatureAttribute.UNDEFINED; } /**MOBのドロップアイテムを返すメソッド*/ @Override public Item getDropItem() { return Item.getItemFromBlock(Blocks.wool) ; } /**MOBのドロップアイテムをドロップさせるメソッド*/ @Override protected void dropFewItems(boolean isCanDropRare, int fortuneLv){ Item item = this.getDropItem(); int amount = 1; if(isCanDropRare this.rand.nextBoolean()) { item = Item.getItemFromBlock(Blocks.stained_glass); } if(fortuneLv 0) { amount += fortuneLv; } int damage = this.rand.nextInt(16); for(int i = 0; i amount; i++) { this.entityDropItem(new ItemStack(item, amount, damage), 0.0F); } } /**Tickごとに呼ばれるメソッド*/ @Override public void onUpdate() { int x = (int) this.posX; int y = (int) this.posY; int z = (int) this.posZ; if(this.worldObj.getBlock(x, y - 1, z).getMaterial() == Material.iron) { this.worldObj.createExplosion(this, x, y, z, 3F, true); } super.onUpdate(); } /**MOB死亡時に呼ばれるメソッド*/ public void onDeath(DamageSource source) { super.onDeath(source); if(source.getSourceOfDamage() != null source.getSourceOfDamage() instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer) source.getSourceOfDamage(); if(!this.worldObj.isRemote) { player.addChatMessage(new ChatComponentText("You slayed.")); player.triggerAchievement(AchievementList.mineWood); } } } /**ダメージを食らうか否かを判定するメソッド*/ @Override public boolean attackEntityFrom(DamageSource source, float damage) { if(source.isExplosion()) { return false; } else if(source.isFireDamage()) { return super.attackEntityFrom(source, damage * 2); } else { return super.attackEntityFrom(source, damage); } } } RenderAluminiumCreeper.java +長いので囲みます package tutorial.aluminiummod; import net.minecraft.client.renderer.entity.RenderLiving; import net.minecraft.entity.Entity; import net.minecraft.util.ResourceLocation; public class RenderAluminiumCreeper extends RenderLiving { public RenderAluminiumCreeper() { super(new ModelAluminiumCreeper() , 0.5F); } /**テクスチャを登録するメソッド*/ @Override protected ResourceLocation getEntityTexture(Entity entity) { return new ResourceLocation("aluminiummod textures/mobs/aluminium_creeper.png"); } } ModelAluminiumCreeper.java +長いので囲みます package tutorial.aluminiummod; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; import net.minecraft.util.MathHelper; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @SideOnly(Side.CLIENT) public class ModelAluminiumCreeper extends ModelBase { public ModelRenderer head; public ModelRenderer head2; public ModelRenderer body; public ModelRenderer leg1; public ModelRenderer leg2; public ModelRenderer leg3; public ModelRenderer leg4; public ModelAluminiumCreeper() { this(0.0F); } /**Modelを登録するメソッド*/ public ModelAluminiumCreeper(float size) { byte b0 = 4; this.head = new ModelRenderer(this, 0, 0); this.head.addBox(-4.0F, -8.0F, -4.0F, 8, 8, 8, size); this.head.setRotationPoint(0.0F, (float)b0, 0.0F); this.head2 = new ModelRenderer(this, 32, 0); this.head2.addBox(-4.0F, -8.0F, -4.0F, 8, 8, 8, size + 0.5F); this.head2.setRotationPoint(0.0F, (float)b0, 0.0F); this.body = new ModelRenderer(this, 16, 16); this.body.addBox(-4.0F, 0.0F, -2.0F, 8, 12, 4, size); this.body.setRotationPoint(0.0F, (float)b0, 0.0F); this.leg1 = new ModelRenderer(this, 0, 16); this.leg1.addBox(-2.0F, 0.0F, -2.0F, 4, 6, 4, size); this.leg1.setRotationPoint(-2.0F, (float)(12 + b0), 4.0F); this.leg2 = new ModelRenderer(this, 0, 16); this.leg2.addBox(-2.0F, 0.0F, -2.0F, 4, 6, 4, size); this.leg2.setRotationPoint(2.0F, (float)(12 + b0), 4.0F); this.leg3 = new ModelRenderer(this, 0, 16); this.leg3.addBox(-2.0F, 0.0F, -2.0F, 4, 6, 4, size); this.leg3.setRotationPoint(-2.0F, (float)(12 + b0), -4.0F); this.leg4 = new ModelRenderer(this, 0, 16); this.leg4.addBox(-2.0F, 0.0F, -2.0F, 4, 6, 4, size); this.leg4.setRotationPoint(2.0F, (float)(12 + b0), -4.0F); } /**Modelをレンダリングするメソッド*/ public void render(Entity entity, float f1, float f2, float f3, float yaw, float pitch, float size) { this.setRotationAngles(f1, f2, f3, yaw, pitch, size, entity); this.head.render(size); this.body.render(size); this.leg1.render(size); this.leg2.render(size); this.leg3.render(size); this.leg4.render(size); } /**頭、足、腕などの角度を設定するメソッド*/ public void setRotationAngles(float f1, float f2, float f3, float yaw, float pitch, float size, Entity entity) { this.head.rotateAngleY = yaw / (180F / (float)Math.PI); this.head.rotateAngleX = pitch / (180F / (float)Math.PI); this.leg1.rotateAngleX = MathHelper.cos(f1 * 0.6662F) * 1.4F * f2; this.leg2.rotateAngleX = MathHelper.cos(f1 * 0.6662F + (float)Math.PI) * 1.4F * f2; this.leg3.rotateAngleX = MathHelper.cos(f1 * 0.6662F + (float)Math.PI) * 1.4F * f2; this.leg4.rotateAngleX = MathHelper.cos(f1 * 0.6662F) * 1.4F * f2; } } ItemAluminiumEgg.java +長いので囲みます package tutorial.aluminiummod; import net.minecraft.block.Block; import net.minecraft.block.BlockLiquid; import net.minecraft.entity.Entity; import net.minecraft.entity.IEntityLivingData; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.Facing; import net.minecraft.util.MathHelper; import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; /**このクラスは、net.minecraft.Item.ItemMonsterPlacerをもとに作成しています。*/ public class ItemAluminiumEgg extends Item { /**アイテムでブロックを右クリックしたのメソッド。ItemMonsterPlacer参照。*/ @Override public boolean onItemUse(ItemStack itemStack, EntityPlayer player, World world, int x, int y, int z, int side, float posX, float posY, float posZ) { //サーバー側の場合は処理をスキップする if (world.isRemote) { return true; } else { Block block = world.getBlock(x, y, z); x += Facing.offsetsXForSide[side]; y += Facing.offsetsYForSide[side]; z += Facing.offsetsZForSide[side]; double height = 0.0D; if (side == 1 block.getRenderType() == 11) { height = 0.5D; } Entity entity = spawnEntity(world, (double)x + 0.5D, (double)y + height, (double)z + 0.5D); if (entity != null) { if (!player.capabilities.isCreativeMode) { --itemStack.stackSize; } } return true; } } /**アイテムを使ったときのメソッド。ItemMonsterPlacer参照。*/ @Override public ItemStack onItemRightClick(ItemStack itemStack, World world, EntityPlayer player) { //サーバー側の場合は処理をスキップする if (world.isRemote) { return itemStack; } else { MovingObjectPosition movingobjectposition = this.getMovingObjectPositionFromPlayer(world, player, true); if (movingobjectposition == null) { return itemStack; } else { if (movingobjectposition.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) { int x = movingobjectposition.blockX; int y = movingobjectposition.blockY; int z = movingobjectposition.blockZ; if (!world.canMineBlock(player, x, y, z)) { return itemStack; } if (!player.canPlayerEdit(x, y, z, movingobjectposition.sideHit, itemStack)) { return itemStack; } if (world.getBlock(x, y, z) instanceof BlockLiquid) { Entity entity = spawnEntity(world, (double)x, (double)y, (double)z); if (entity != null) { if (!player.capabilities.isCreativeMode) { --itemStack.stackSize; } } } } return itemStack; } } } /**Mobをスポーンさせるメソッド*/ public Entity spawnEntity(World world, double x, double y, double z) { EntityAluminiumCreeper entityliving = new EntityAluminiumCreeper(world); entityliving.setLocationAndAngles(x, y, z, MathHelper.wrapAngleTo180_float(world.rand.nextFloat() * 360.0F), 0.0F); entityliving.rotationYawHead = entityliving.rotationYaw; entityliving.renderYawOffset = entityliving.rotationYaw; entityliving.onSpawnWithEgg((IEntityLivingData)null); world.spawnEntityInWorld(entityliving); entityliving.playLivingSound(); return entityliving; } } 解説 AluminiumMod +長いので囲みます void registerModEntity(Class ? extends Entity entityClass, String entityName, int id, Object mod, int trackingRange, int updateFrequency, boolean sendsVelocityUpdates) Mod用のMOBを追加するメソッド。 引数は、以下の通り。 引数 内容 entityClass 追加するEntityをClass型で渡す。 entityName 追加するEntityの名称。langファイルで、entity.[MODIDで登録した名称].[entityNameで登録した名称].name=[ローカル名]でローカル名を登録できる。 id 追加するEntityのID。同一MOD内で被るとエラーを吐く。 mod MODを渡す。thisで渡せばOK。 trackingRange MOBの更新範囲。 updateFrequency MOBの更新頻度。何tickごとにMOBを更新するかの値。基本的に2以下の値を渡す。 sendsVelocityUpdates MOBの更新時に加速度の情報を更新させるか否か。MOBや動物の場合は基本的にtrueを渡す。 void addSpawn(Class ? extends EntityLiving entityClass, int weightedProb, int min, int max, EnumCreatureType typeOfCreature, BiomeGenBase... biomes) Entityの自然スポーンを追加するメソッド。 引数は、以下の通り。 引数 内容 entityClass スポーンを追加させるEntityをClass型で渡す。 weightProb Entityのスポーンがどれくらいの頻度で抽選されるかの値。値が大きいほうがスポーンしやすい。 min Entityがスポーンする際の最低数。 max Entityがスポーンする際の最高数。 typeOfCreature Entityのスポーンタイプ。EnumCreatureType一覧-monster...敵性MOBの属性。夜にスポーンする。-creature...友好MOB(とオオカミ、ヤマネコ)の属性。昼にスポーンする。-ambient...コウモリの属性。-waterCreature...イカの属性。これのみ、スポーン場所が空気中でなく水中になる。 biomes Entityがスポーンするバイオーム。複数バイオームを渡す場合は、先にfinal定数でリストを作ってからそのリストをそのまま引数に渡した方がいい。 void registerEntityRenderingHandler(Class ? extends Entity entityClass, Render renderer) Entityのレンダーを追加するメソッド。 Client限定の処理であり、Serverで処理してしまうとクラッシュの原因になるため、必ずif文とSideOnlyアノテーションを付けたメソッドで処理をする。 もしくは、proxyで分化させる手もある。 第一引数には登録EntityをClass型で、第二引数は登録Renderをインスタンス型で渡す。 EntityAluminiumCreeper +長いので囲みます tasks.addTask(int p_75776_1_, EntityAIBase p_75776_2_) Entityに攻撃、移動AIを追加するメソッド。 ターゲットAIは後述のtargetTasks.addTaskを用いる。 第一引数はAIの順位(小さいほうが先に行動される。)、第二引数がAI。 主なAI EntityAISwimming(EntityLiving p_i1624_1_) 水を泳ぐAI。 第一引数にはthisを渡す。 EntityAIAttackOnCollide(EntityCreature p_i1635_1_, Class p_i1635_2_, double p_i1635_3_, boolean p_i1635_5_) 特定のEntityを襲うAI。 第一引数にはthis、第二引数には襲う対象のEntityをクラス型で、第三引数には自分の通常移動速度に対する倍率、第四引数には追い続けるか否かの判定を渡す。 第三引数が1より大きいと、通常の移動スピードより高速で襲ってくることになる。 EntityAIAvoidEntity(EntityCreature p_i1616_1_, Class p_i1616_2_, float p_i1616_3_, double p_i1616_4_, double p_i1616_6_) 特定のEntityから逃げるAI。 第一引数にはthis、第二引数には逃げる対象のEntityをクラス型で、第三引数には対象からどれだけ逃げるかの距離、第四引数には対象と十分離れたときの逃げる速度の倍率、第五引数には対象と近いときの逃げる速度の倍率を渡す。 第四引数 第五引数となれば、対象と近いときはより急いで逃げるようになる。 EntityAIWander(EntityCreature p_i1648_1_, double p_i1648_2_) うろうろするAI。 第一引数にはthis、第二引数には速度の倍率を渡す。 第二引数は、基本的に1より小さい値を渡す。 EntityAIWatchClosest(EntityLiving p_i1631_1_, Class p_i1631_2_, float p_i1631_3_) 特定のEntityを睨むAI。 第一引数にはthis、第二引数には睨む対象のEntityをクラス型で、第三引数は対象との距離を渡す。 第三引数が大きいと、対象が離れていても視認する。 EntityAILookIdle(EntityLiving p_i1647_1_) きょろきょろするAI。thisを渡す。 targetTasks.addTask(int p_75776_1_, EntityAIBase p_75776_2_) EntityにターゲットAIを追加するメソッド。 第一引数はAIの順位(小さいほうが先に行動される。)、第二引数がAI。 主なAI EntityAINearestAttackableTarget(EntityCreature p_i1663_1_, Class p_i1663_2_, int p_i1663_3_, boolean p_i1663_4_) 特定のEntityをターゲッティングするAI。 第一引数にはthis、第二引数には対象のEntityをクラス型で、第三引数には行動しない確率(0だと攻撃できる場所に入れば必ずターゲッティングされる)、第四引数にはブロックに囲まれていてもターゲッティングするか否かを渡す。 第四引数をtrueにすると、ゾンビのように対象がブロックに囲まれていても、視認できれば攻撃しようとする。 EntityAIHurtByTarget(EntityCreature p_i1660_1_, boolean p_i1660_2_) 攻撃したEntityに反撃するAI。 第一引数にはthis、第二引数には反撃する際周囲の同種のEntityに助けを求めるか否かを渡す。 第二引数をtrueにすると、第一引数のEntityを攻撃したEntityは、第一引数と同種の周囲のEntityにも狙われる。ゾンビやゾンビピッグマンのような行動をする。 EntityLivingBase.getEntityAttribute(IAttribute p_110148_1_).setBaseValue(double p_111128_1_) Entityに対してHPやスピード等の数値を追加するメソッド。 getEntityAttributeに追加する数値の種類、setBaseValueにその値を渡す。 引数一覧 すべてSharedMonsterAttributesのstatic定数である。 定数名 説明 既定値 movementSpeed 移動速度 0.7(ただし、バニラのMOBは基本的に0.25) followRange 追跡距離 32 knockbackResistance ノックバック耐性 0 maxHealth 体力 20 RenderAluminiumCreeper ResourceLocation(String p_i1293_1_) Entityなどでテクスチャを指定する際につかうコンストラクター。 "aluminiummod textures/mobs/aluminium_creeper.png"のように、ファイルと修飾子まで入れる必要がある。 また、テクスチャを実装する場合は、今回のものはモデルをクリーパーのものを流用したため、クリーパーのテクスチャをaluminiummod/mobs/に放り込んでaluminium_creeperと名前を付ければよい。 ItemAluminiumEgg spawnEntityInWorld(Entity p_72838_1_) Entityをワールドにスポーンさせるメソッド。 ただし、setLocationAndAnglesなどで先にスポーン位置を指定する必要がある。 Tips クリーパーに因んでEntityを光らせる方法と爆発を発生させる方法を説明する。 Entityを光らせる 以下のコードを追加する。 @SideOnly(Side.CLIENT) public int getBrightnessForRender(float p_70070_1_) { return 15728880; } public float getBrightness(float p_70013_1_) { return 50.0F; } getBrightnessForRenderが描画側、getBrightnessが計算側に明るさを渡す。数値はこれらが最大値である。 爆発を発生させる 爆発を発生させる方法は二種類ある。どちらもWorldクラスに属する。 createExplosion(Entity entity, double x, double y, double z, float power, boolean destroyBlocks) 引数は発生Entity(このEntityは爆発によるダメージ、処理から除外されることになる)、座標(double三つ)、威力(大体土ブロックでの爆発半径に等しい。威力15以上は何故か正方形状に削れてしまう上範囲がほぼ広がらないため別処理の実装が望ましい。匠CraftのEntityGiantCreeper参照。)、ブロックを破壊するか否か、となっている。 newExplosion(Entity entity, double x, double y, double z, float power, boolean destroyBlocks, boolean spreadFire) 最終引数以外上記と一緒。最終引数は炎を撒き散らすかどうか。ファイアボールのような処理にしか使わない。なお、上のcreateExplosionはこの関数にfalseを渡しているだけである。 また、この二つの関数はExplosion型を返すため、イベントの追加にある爆発のフック処理をこの爆発限定で行うことも出来る。 コメント この項目に関する質問などをどうぞ。 EntityAluminiumCreeperの解説のEntityLivingBase.getEntityAttributeの下にあるmaxHealth|体力|20|がミスってますよ - 名無しさん 2016-02-02 19 49 20 ご指摘ありがとうございます。修正いたしました。 - Tom Kate 2016-02-02 20 28 33 AluminiumModの解説の(Class ? extends Entity entityClass, String entityName, int id, Object mod, int trackingRange, int updateFrequency, boolean sendsVelocityUpdates)のObject modをthisを使わないで処理しようと思ったら何を入れればいいですか? - west_village 2016-08-08 21 53 19 public static final AluminumMod instance = new AluminumMod();のように、インスタンスを作ってインスタンスを引数に渡してください。 - Tom Kate 2016-08-08 22 37 24 匠Craftの光匠やグロウストーン匠のように、光るMOBを作る方法はありますか?(実際は光っていないのかもしれないのか…?) - あるふぁ 2017-05-30 19 48 05 追記いたします。ご確認ください。 - Tom Kate 2017-06-01 19 39 57 たびたびすみません。プレイヤーなど既存のMOBを光らせる方法はありますか? - あるふぁ 2017-06-01 20 53 42 返信遅くなりまして申し訳ありません。こちらのチュートリアルにTipsとして追記しました。 - Tom Kate 2017-06-07 19 27 42 追記できておりません。Tom氏が多忙のようですので、もうしばらくお時間いただくことになりそうです。申し訳ありません。 - 赤砂蛇凪浜 2017-06-16 18 11 48 名前
https://w.atwiki.jp/battlefield1942/pages/91.html
戦国MOD 正式名称:(新・旧)戦国MOD 作者:30番氏+有志の方々 最新バージョン:*0.15alpha 目次 戦国MODMOD紹介 兵科紹介火縄銃を装備 戦国のスナイパー 『鉄砲足軽』 乱戦なら俺に任せろ 『刀足軽』 中距離から味方を援護 『弓足軽』 回復から攻城まで何でもござれ 『まさかり足軽』 くせがあるが慣れると強い 『ヤリ足軽』 虎徹を持った戦闘狂 『刀将』(キット) アイエエエエ! ニンジャ!? ニンジャナンデ!? 『忍』 遊び方の例サシ勝負 組戦 乱戦 城門攻防扉の開閉 攻撃側 防御側 桶狭間について麻呂車 西軍側 東軍 Tips槍衾を作ろう 多数対一人の斬り合い 初心者だけどもうちょっと腕を上げたい 馬が暴れてうまく乗れない 騎乗時の視点と槍の向きが合わない 日々の稽古 ダウンロード新戦国MODバージョン0.15alpha カスタムマップ ロード中にエラー落ちする人へ インストール 連絡IRC SengoegeMODMOD紹介 戦国とSiegeの変更点 ダウンロード インストール バグ 戦国DCFダウンロード コメント MOD紹介 戦国時代の合戦を舞台としているMOD。 兵科紹介 火縄銃を装備 戦国のスナイパー 『鉄砲足軽』 1.匕首 3.火縄銃(構え) 6.火縄銃(構え解除) 戦国内の飛び道具(武器)では最も威力、射程距離が高いと同時にリロード時間が最も長い。 銃を構えている間は移動速度が下がるが、匕首と6では通常の速さになる。ただし6の時は一切攻撃が出来ないので注意。 体力満タンの敵の手足に当たっても死にはしないので 胴と頭を打ち抜くAIMが要求される。 外した時は逃げて味方に任せるか、あきらめて匕首で戦うか、落ちている他の兵科キットを拾って戦うとよい。 匕首で戦う場合、敵と距離を置いてはいけない。常にぶつかりながら連打しよう。 乱戦なら俺に任せろ 『刀足軽』 1.脇差 3.打刀 4.石(補給可) 5.握り飯(補給不可) 近接戦闘においては、打刀の威力の高さと攻撃回数の多さは他兵科の刃物の追随を許さない。 左クリックで縦切り、右クリックで横切り。判定の出かたも前者が縦列、後者が横列。 距離 縦 横。 予備動作の長さ 横 縦 縦は遠間、横はぶつかるくらいの近さで使うと効果的。 右下に黄色のケージがあるが、縦で振ると溜まっていき、ケージ一杯になったら振れなくなる。 ただし、横は振れる。横は連続して2,3度振ったら、少しの間横に振れなくなる。 できるだけ脇差には頼らないようケージには気を配るべし。 石は一応飛び道具であるが、威力、射程距離、速度が低く近くから投げられても簡単に避けられる。 握り飯は自分を全回復可能だが、他者を回復させられない。 リロードに若干時間を使うので、一度使った後は余裕があればリロードしておき、次に使う時にもたつかないようにしたい。 中距離から味方を援護 『弓足軽』 1.匕首 3.征矢(補給可) 4.火矢(補給可) 鉄砲足軽と同じく、飛び道具が主体の兵科である。 征矢は威力と射程で鉄砲に劣るが、リロードの速さに勝り、連射できるので 初心者にもとっつきやすい。火矢は地面に刺さっている間ダメージを与え続けられる。 射程距離 征矢>火矢。 リロード時間の短さ 征矢>火矢 火矢は城門を攻撃できる力がある(征矢にはない) これまた鉄砲足軽と同じく、接近戦に持ち込まれると不利だが 鉄砲兵と違って全ての状態で移動速度は落ちないので、下がって敵をひきつけながら弓を射るアウトレンジ戦法が可能。 追い手はジャンプを駆使して追い詰めよう。 回復から攻城まで何でもござれ 『まさかり足軽』 1.脇差 2.弁当(補給不可) 3.鉞 4.(デフォ)木楯-(右クリ)梯子(両方補給可) 5.握り飯 6.木槌 弁当は設置式で、味方と自分のHPを回復できる。 鉞は間合いこそ狭いが、威力は高い。タテ斬りヨコ斬り可。 横振りの攻撃範囲が広いため、密接している状態なら打刀をも凌駕する。 打刀と同じく右下にケージがあるが、打刀と違ってケージ一杯になると横にも振れなくなる。 木楯はあらゆる攻撃を防ぐ事が出来きる。狭い通路に大量に設置すると移動しにくくなる。押して動かす事もできる。 梯子は視界の上下の角度で決まる。下を向けば地面に平行気味、上を向けば垂直気味になる。 城門があるマップではハシゴで上侵入できる。 なお、楯と梯子は弾薬数は共通で、一方を使えばもう一方も減る。 握り飯は無印衛生兵の回復キットに同じ。 木槌は無印工兵のスパナに同じ。 くせがあるが慣れると強い 『ヤリ足軽』 1.脇差 3.槍 6.担ぐ 脇差と槍を持っていると移動速度が落ちる。6を押してから左クリックすると、普通の速さになる。 その状態で脇差を選択しても速度は落ちない。 槍は近接武器においては最も奥へ届く。 判定の出かたが特殊で、他の近接武器は敵とぶつかっている状態で攻撃すれば必ず当たるが 槍の場合、ある距離から手前に向かって判定がなくなる。壁を刺して大体の判定の範囲を掴むとよい。 懐に入られた場合、脇差で戦う、6に持ち替えて距離を開ける、もしくは脇差で敵に密接するフリをして スキを見て離脱、即3に持ち替え攻撃という手も。 攻撃する時以外は基本6の状態で、直前で3の状態にする事で機動力を極力落とさないようにできる。 虎徹を持った戦闘狂 『刀将』(キット) 1.脇差 3.コテツ 4.石(補給可) 5.握り飯(補給不可) 早い話が刀足軽の打刀強化版。 攻撃回数、威力が高くなり、予備動作は少なくなる。打刀と戦うと、お互いの間合いに入った瞬間両者が同時に攻撃して 確実にコテツが勝てるという具合である。 だが、防御力は上がっていないので、倒される時は他の兵科と変わらない。 まさに殺られる前に殺るキット。 キットとして置かれているマップと無いマップがある。 置かれているなら積極的に使いたい。また、運良く敵刀将を倒せたらその場で奪おう。 アイエエエエ! ニンジャ!? ニンジャナンデ!? 『忍』 #ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (ninja.JPG) 特殊マップ"Dark Knigh"の東軍のみ全兵科で選択される。 忍術によりジャンプキーを押すと宙に浮ける。 これにより奇襲やピンチの際の撤退などかなり有利である。 ちなみにバグなのか仕様なのか本来忍者ではない一般武士の西軍側も忍者の装備を奪うと同じく浮くことができてしまう。 現状、このマップはバランスが悪いなど賛否両論のマップなので今後の改良が課題か。 遊び方の例 サシ勝負 少人数(~6,8)の時に有効。 互いのチケットの自然減少の無い状態にする。必要以上陣地は制圧しない。戦闘区域を決める。互いの最前線陣地の中間辺り等、両方が出向く形が好ましい。 使用武器は自由。横殴りさえしなければ、少なくとも弓は受け入れられるようだ。 『刀将』の使用はタブー・・・だが 対刀将戦闘を練習したい人もいる可能性もあるので、チャットで相談してみるとよい。 基本的に1vs1であり、何人たりとも戦闘に介入してはいけない。戦闘は対戦相手を見つけ、相手の了承があって初めて発生する。 連続して闘うより、味方に一旦果し合いを譲る余裕を持とう。 チームとしての戦いではないため、味方同士で戦うこともある。 ☆対戦相手の見つけ方(例) 対戦したい相手に出会う しゃがむ(デフォルトCtrlキー) 戦いたい相手の方を向き、F7F7を押す 対戦相手が了承と取れる態度をとれば決定。上記1~3だったり、単にラジオチャットで返事をするだけの場合もある。 ※2と3の間に、視線を地面に下げ、頭を下げる動作で「礼」をする人や、戦闘終了後に対戦相手の遺体に礼をする人もいるが それは各個人におまかせ。 組戦 中人数(10人前後)向き。 陣地制圧なし。場所はほぼ固定。 使用武器自由。 両軍のメンバーが揃った時が戦闘開始の合図。 どちらかが全滅すれば終了。戦闘中に死亡、リスポンした時は遠くから戦いを見守るだけで介入は禁物。 乱戦 中~大人数向き。 上記の対戦相手を見つける時の動作は一切不要。使用武器自由。他の戦闘への介入可能。 基本的に本来のコンクエストの流れと同じである。『刀将』も遠慮なく使うべし。 ただし、人数によっては、戦闘区域の限定、陣地制圧を無しにする場合もある。 城門攻防 扉の開閉 門の真下辺りでデフォルトEキーを押すと、車両(扉)に乗った状態になる。 三人称視点では門の真下に座っている格好になっている。 カーソルキー↑で開き、↓で閉める。 陣営問わず操作可能。 攻撃側 ①扉を破壊 有効なダメージを与えられるのは兵器の「大筒」と弓足軽の「火矢」である。 大筒の射手は絶好の弓矢と鉄砲の的なので、近寄りすぎは禁物。 もっとも、大筒がとどく場所は敵の鉄砲の弾も届く場所でもあるので 敵に射手が居れば1台一人で破壊するまで撃ち続けるのは困難である。 扉は破壊後二度とリスポンすることは無い。 ②梯子による侵入 2階の窓に届くようにハシゴを設置し、侵入する。 方法は兵科紹介のまさかり足軽の項を参照されたし。 窓は攻撃側からは入れるが、防衛側からは出られないように設定されている。 侵入後は1階に降りて開門するとよい。一気に味方が流れ込めばこっちのもの。 複数人が侵入し制圧できる戦力差があれば陣地占領でもいいだろう。 蛇足だが、窓以外にも梯子を掛ける事で浸入できる場所も少なからずある。 では、どうせめるのか? 実際には、②では味方の全ての戦力を投入する事は出来ない。 ハシゴは1,2つしかかけられていないし、時間が経てば消えてしまうので断続的にしか侵入できないからである。 逆に防衛側は門に集まっているからほぼ全ての兵力を投入していることになる。 しかし門を破壊すれば攻撃側も全ての兵力を投入する事が出来る。 よって、門破壊が正攻法でありハシゴ侵入はあくまで奇襲・撹乱と考えた方がよいだろう。 もちろん②だけで攻めなければいけない場合もあるし、次々に陣地を占領していくことは不可能ではないだろう。 しかし、再び陣地を取り戻されれば必ず閉門されるので振り出しにもどるリスクがあることは考えておきたい。 防御側 ①扉破壊の阻止 しつこいようだが、扉の有効な破壊方法は大筒と火矢である。 大筒はまさかりで破壊可能。接近が難しい場合は射手を倒す。(一部防衛側も大筒に乗れるマップもある) 弓と鉄砲など飛び道具で狙い撃ちが基本。 火矢の場合は飛距離があまりないので、敵の弓足軽が近づいてくれば倒す程度でよいだろう。 まさかりの盾を扉の前に置くことで、敵射手は上部を狙うしかなくなるので少しは命中率を下げることはできる。 ちなみに扉はあまり修理できない。一人では雀の涙である。 かといって4,5人で修理しても2,3台の大筒から攻撃されると結局破壊されてしまう運命にある。 オシレイオンの裏門は開始時にすべて開放されている。戸締りを忘れずに。 ②梯子からの敵兵撃退 2階に居る兵は弓と鉄砲兵が殆どになるが、近接武器の貧弱さから、ハシゴで浸入してきた敵には対応できない。 近接主体の兵科は梯子の存在に注意し、2階を見るか③に出るかを判断したい。 ③門外へ出て迎撃 一見扉を閉めると味方も門を出入りできないように見えるが 門によっては脇道があって門外に出ることができるようになっている。 では、どう守るのか? ③が可能であれば近接主体の兵科はどんどん出ていくべきである。 前線を少しでも押し下げ、門の脅威となる大筒射手と火矢の排除、そしてハシゴを持つまさかり足軽を遠ざけることが 優先事項となる。 弓・鉄砲は大筒の射手を優先的に排除し、次に近づいてきた弓足軽とまさかり足軽を排除する。 ③が出来ない場合、門の破壊は時間の問題であるから 近接兵科はハシゴからの侵入を警戒したい。 弓・鉄砲は上と同じで大筒と火矢を遠ざけたい。 また、敵の進撃が速いと次の陣地にすぐ到着する事もあるので 後方の門の封鎖も頭に入れておきたい。 桶狭間について 桶狭間は特殊マップのため、戦略を事前に把握しておくことを推奨します。 麻呂車 #ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (maroguruma.jpg) #ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (oyakatasama.jpg) 西軍側には護衛対象として、荘厳な車に乗った"お館様"(通称 麻呂)が登場します。この麻呂車は鈍重で足が遅い為、 弓や鉄砲による狙撃が大きな脅威となります。常に随伴歩兵と供にするよう心掛けましょう。 この車は2人乗りで、1番席で操縦するとともに左クリックで開門指示(「カイモーン!カイモーン!オヤカタサマ,ゴトウチャクナリー」)ができます。 麻呂の倒し方としては、弓・鉄砲で狙撃するか、車内に侵入して麻呂を直接攻撃する方法があります。 車内へ上がるには、轅(ながえ)の内側に入ってから麻呂車の下方でジャンプすると簡単に侵入できます。 なお、東軍側も含めた注意点として"麻呂車の進路上に盾や梯子を置かない"というルールがあります。 これらの障害物を置くと麻呂車が瞬殺される可能性があるため、ゲーム進行の妨害に繋がりかねません。 配置・操縦ともによく注意するようにしましょう。 西軍側 西軍は手押し車を押せるので、お館様を最終地点まで護衛しよう。西軍は手押し車がリスポーン地点となっている。 城門まで来たら、カイモーンカイモーン(右クリック押しっぱなし。機銃のような感じになっている)で城門を攻撃、 中の旗を取れば勝ちである。 車の運用は、東軍の陣地から距離をとりつつ城門まで急ぐのが重要。立ち止まるのは非常に危険なので厳禁と言っていい。 マップに書かれた道を通らなければならない訳ではないことに注意 最短距離ではあるが敵陣の真っただ中を通らなければならないルート(マップ通りのルート)と、 今川本陣から大通りを素通りして北に進み、丘の陣地をスルーする北回りルートなどがある。 どちらのルートから進むにしても全方向から敵兵が来るので、後方で足止めする為に 車護衛の兵が持ち場を離れてしまわないように注意! 車を目的地まで護衛するのが目的なので車から離れて攻めに向かって行ってはならない 車が破壊されてしまうと負けるので、修理のため工兵(まさかり兵)がある程度必要。斬り合いに自信の無い人は、 まさかり兵を選んで車の防衛と護衛の兵たちの進軍を援護にまわってみてはどうだろうか。 護衛の兵は、車と敵陣の間に立ち車へ到達する兵の数を減らす前衛と、車の回りに立って 直接車を攻撃してくる兵を叩く直衛に分かれて行動するのが割と良い。 全員が車の回りから離れようとしないのは、敵が数を削がれる事無く車に到達してしまう点、 かなりの乱戦になってしまう点で防衛側が不利になるだけである。 火矢による攻撃が危険なので、弓兵の優先排除が望ましい。 刀や槍兵は車からそれほど離れられる訳ではないので、これは特に鉄砲隊に課せられた任務と言える。 東軍 敵の車が近づく前に余裕を持って陣地を押さえておくことが望ましい。 目標は義元ただ一人という事を忘れてはいけない。どんなに斬り合いで優勢に立っても車が無傷では勝てない。 車を引く兵を優先的に狙うことによって車を足止めし、その隙に火矢を討ちこんだり鉞振り回して適当に袋叩きにすれば恩賞も思いのままとなろう。 Tips 槍衾を作ろう 槍衾(やりぶすま)とは、槍兵が整列して前方に槍を突き出す体形(あってる?)のこと 密集して槍隊を組む事によって、槍の攻略法である"回り込む"と"斬り込む"の両方を封じる事ができる 槍の射程は刀や鉞より長く、相手の間合いに入る前に一方的に攻撃出来るため、何本も槍を突き出されると それだけで前に進めなくなる壁となる。積極的に槍隊を組んでみよう 一対一の場合(矢印は槍) 兵→ 敵 ・通常は若干槍有利 乱戦の場合 兵→ 敵 ←兵 ・状況にもよるが、乱戦で複数を相手にする場合は槍が不利 敵 槍衾の場合 兵→ 敵 兵→ 敵敵 兵→ 敵 ・相手が近接武器のみなら、槍隊の圧倒的有利 兵→ 敵は無暗に接近すれば先に討たれ、突撃しても相討ちの可能性大. 利点 防衛側で圧倒的有利に立てる 城門の内側、直接矢が跳んでこないあたりに布陣した場合 そこがオマハビーチになることは間違いない。 城攻めマップで過去何度も防衛側を勝利に導いてきた戦術 (ただしあまりの硬さにしびれを切らした攻撃側の裏取りを誘発してしまう事もあるのだが…) 楽しい 味方と連携するのも楽しいが、それ以上に相手の反応を見るのが面白い 敵がどうでるのかは実際にやってその目で確かめてみてほしい。 欠点 飛び道具には弱い 近接武器の宿命なのでこれはしかたが無いところ。 ただし前に盾を置いたり、弾の飛んでこない所にいることで多少は耐えられる 待ちメインになってしまう ちゃんと統率のとれた動きで、かつ規模が大きければ可能ではあるが 普通は槍衾を維持したまま攻撃に出るのは難しい。 数人で同時に同じ方向を向くのは結構大変だし、飛び道具の攻撃をもろに食らってしまったりして 割とすぐバラバラになってしまう。結局守りの時しか機能しない事が多い このような理由により、ゲーム中に槍隊を募っても人があまり乗ってこない事も珍しくない 多数対一人の斬り合い 多数で一人を斬る場合、例えば全員が同時に一人に群がるのはあまり得策ではない もし敵一人に対して、一度に数人が自分の間合いをつかもうとして突っ込んだ場合 (というよりかは全員が自分が斬るつもりで突っ込んだ場合) 多数側は味方と場所が重なって、間合いが掴めなくなってしまう上に 常に同士討ちに注意しなければならない。画面端に一瞬捉えた人影が敵か味方かはっきりない場合もあるので 味方から斬られる可能性は少なくない。また、敵の横斬りに巻き込まれて一度に二人やられてしまう事もありうる。 複数だからと言って確実に相手を倒せる訳というではない。 人数のアドバンテージを生かすには敵を追い回すのではなく取り囲む必要がある パス回しの要領で敵に対するのが一つの手としてある 兵1 ↑ 敵 / \ 兵2 兵3 斬りかかる瞬間が最も隙が大きいので、敵が味方を狙っている間に その背中か側面を斬るというのが基本形になる 敵との適当な間合いは経験でつかむしかないが、付かず離れずで敵との距離を維持し相手を囲む。 遠すぎると一対一と変わらないし、近すぎると混戦になって不利になることに注意。 この時大事なのは、斬りに行ける間合いを維持しつつも無理に行かない事。 敵が兵1に斬りかかってる隙に兵2か3のどちらかが(状況によるが近い方)敵の背後か側面を斬り、 もう一人は間合いを維持しつつ待機。敵の反転に備える ポイントは 敵の背後を作りだすために味方同士の距離を取る 無理に突っ込まない の二つ もし多人数に囲まれた場合は、あわてて攻撃を連打しない事が肝心である。落ち着いてタイミングをみかはろう。 大抵の戦国鯖では後方視点が使えるため、時々視点変更を入れて周囲の状況を確認しつつ上手く立ち回るべし。 無理だと思ったら味方のいる所まで逃げるのも一つの手である。囲まれた状況から全員を斬り伏せて脱出するのとは違い 走って逃げることはそれほど難しい事ではない。ただし、攻撃時の踏み込みのため、普通に走るだけでは背中を斬られるだろう。 初心者だけどもうちょっと腕を上げたい 間合いをつかもう 武器の射程と範囲、出の早さなどを覚えるとよい BOT相手(棒立ちでOK)や壁打ちでも確かめる事が出来る DCFや無印をやろう 無印でもそうですが、特にDCFは動きが激しいので 普段からやっていると戦国の斬り合いにも付いていけるようになります(個人差あり) 困ったら槍 全然勝てなくて困ったら槍をすこし練習してみるといいかもしれません :間合いが分かりやすいので武器の扱いを覚えるのに役立つ :先に攻撃できるので、刀に比べて瞬殺される事が少ない(※ただし瞬殺か秒殺かの違い) :数人で槍衾を組めば割と強い という利点があります。 まさかり兵もいいよ! :横斬りの攻撃範囲の広さゆえ、乱戦時にまともに戦える :はしご設置、盾設置、味方の回復・弁当箱設置と役割自体は多いので、戦闘が苦手でも役に立てる という利点があり、斬り合いが苦手という理由で火縄銃を使っている人にはおすすめ 馬が暴れてうまく乗れない スピードが出た状態で曲がる事はできません 曲がる前にはブレーキをかけて減速しましょう 騎乗時の視点と槍の向きが合わない 馬上での視界の向きと槍の向く方向は同じ速度で動かないため、槍の向きがなかなか合わせにくくなっているようです この差を調整し槍の向きと視界の方向を合わせたい時は、照準を素早く動かすとやりやすいです。 ちょっと説明が難しいので各自で試してみてください 日々の稽古 戦国鯖では、イベント時の人待ち時間や夏祭りマップを除けば 通常2人から1対1のガチの斬り合いになります。 梅鯖閉店後の21 30以降からdamepo開店前までなら、鯖にひとりで入っていれば相手をしてくれる人が割と見つかるので 戦国イベントのために稽古をしておきたい人は是非鯖に入ってみてください。意外に人が後から入ってくるもので サシ勝負から人が集まって突発祭りになった事も何度かあります。 ダウンロード 新戦国MODバージョン0.15alpha Google Driveよりダウンロード 新戦国MODバージョン0.15alpha Google Driveよりダウンロード2 魔離穴城(マリアナ侵攻作戦in戦国)+エラー落ち対策animations.rfa導入済み 新戦国MODバージョン0.15alpha MEGAよりダウンロード2 魔離穴城(マリアナ侵攻作戦in戦国)+エラー落ち対策animations.rfa導入済み 新戦国MODバージョン0.15alpha カスタムマップ 魔離穴城(マリアナ侵攻作戦in戦国) http //www1.axfc.net/u/3574776.zip ロード中にエラー落ちする人へ このanimations.rfaを上書きすると落ちなくなります https //drive.google.com/file/d/1tfWj2KDuowcQbMzUCRSpHW3LHbrzs5re インストール 戦国MODはインストーラー方式ではないため、手動でインストールする。 上記から0.15alphaをダウンロードし解凍し 戦国0.15開発中というファイルの中から"sengoku"フォルダをBF1942のMODsフォルダに入れるだけ。 詳しくはこちらから 連絡 IRC フレンドチャット #戦国の友 SengoegeMOD 作者:本スレVol.576 352氏 最新バージョン:Ver0.01 MOD紹介 このMODの製作のきっかけは某匿名掲示板のスレッドでやりたいMODの中でSiegeと戦国がやりたいと要望が多かったので、 Siegeもやりたいが戦国もやりたいという贅沢に悩みつつwikiの戦国MODのコメント欄に「戦国とSiegeを組み合わせたら面白そう」というコメントがあったので、 確かにそれは面白そうだと思い実際に製作をしました。 SengoegeMODは、バトルフィールド1942のMOD「戦国MOD 0.15Alpha」と「Siege 0.32」を融合させたMiniMODです。 プレイするには本MODと戦国MOD 0.15αとSiege 0.32が必要になります。 戦国マップにSiege用武器キットを導入(リスポン時の兵装は雰囲気をぶち壊さないため戦国のまま) Siege武器キット(7種類)は旗付近にあります。 BFerなら誰もが一度は想像したことのある(?)であろう、戦国+Siegeという和洋折衷の中世の戦いが楽しめる。 西洋から日本の戦国時代にSiegeの武器が参戦し、仕様も変更されているので今までの戦国MOD単体とはまた違った新鮮な戦いが楽しめるのではないか? 戦国とSiegeの変更点 戦国 火縄、弓、大筒の装弾数を増加 Siege 差別化をするため武器に特徴をもたせた Sword 射程が短いため、その分攻撃回数を増加。盾持ち。 Mace 射程が短いため、その分一発あたりの攻撃力を増加。ラウンドシールド持ち。 Hammer Maceとの差別化を図るため、Maceよりも攻撃力を増加。ほんの僅かだが門にダメージを与えることが可能。鎧兜盾なし。 PoleAxe 一度の攻撃回数を増加。一番癖のある武器。盾なし。 Halberd 斬と突の動作を追加。刀と槍の攻撃を劣化させた武器。盾なし。 Longbow 戦国の弓よりも、威力、飛距離、リロード時間を増加。盾なし。 Crossbow ボウガン。マガジン形式に変更。一回の装填で5発発射可能だが、リロード時間がとても長い。飛び道具の中では射程・威力共に一番低い。 兵器 バリスタ 槍発射機、男浜ビーチに登場。MG42の代替兵器。爆発効果なし。 鷹 WesternWarMODから借用。上空を唯一翔ける事ができる兵器。鳴き声がある。 チハ 人力駆動戦車らしい。大筒を装備しているが、反動がとても大きい。刀に3回斬られると爆発する。 ダウンロード 戦国MOD 0.51 上記から Siege0.32 sengoegeMOD http //www1.axfc.net/uploader/Si/so/15s1446 インストール プレイするにはsengoegeMOD(本MOD)と戦国MOD 0.15αとSiege 0.32が必要になります。 それぞれダウンロードしたら別々にMODsフォルダに入れる バグ ※Siegeマップを選択するとクラッシュするので選択しないで下さい SengoegeMODはまだ完全に完成した訳ではないためか、 人物の挙動がおかしかったり、特定の行動をとるとサーバーが落ちるなどといった報告がされている。 更新を願おう。 戦国DCF 最新バージョン:0.0h ダウンロード ver0.0h4sharedよりDL 0.0hFix4sharedよりDL コメント コメントは最新10件が表示されます これって今人いるの?面白そうだからやってみたいんだけど -- (名無しさん) 2013-11-06 15 22 56 シングル・コープじゃないのにロード中に落ちる!w -- (名無しさん) 2014-01-04 22 39 55 何でだあ シングルマルチどっちでも強制終了じゃあ -- (名無しさん) 2014-05-06 22 00 51 ぱっちいれたらできたのす -- (名無しさん) 2014-06-01 18 42 07 やりたいけども鯖ありまするか? -- (名無しさん) 2015-04-02 13 23 36 ↓CM公開 魔離穴城(マリアナ侵攻作戦in戦国) -- (名無しさん) 2015-12-03 18 31 13 http //www1.axfc.net/u/3574776.zip -- (名無しさん) 2015-12-03 18 31 37 ぜひシングルに対応してもらいたいものだ -- (名無しさん) 2016-01-09 11 15 49 窓化で出来ますゾ ちゃんと打ってきたり斬ってきたり -- (名無しさん) 2016-04-04 10 23 03 戦国mod本体が「権限が無い」との理由で落とせないんですが… -- (名無しさん) 2022-07-28 13 40 31 名前 コメント すべてのコメントを見る
https://w.atwiki.jp/komachiserver/pages/24.html
クライアント許可MOD FML FPS++ optifine 影MOD Rei s Minimap 他書いてないのは大体許可してないです 書き忘れ、こういうのつかってもいいんじゃない? というのがありましたら管理までお願いします
https://w.atwiki.jp/akasatanahama/pages/21.html
概要 何の機能もない基本的なブロックを追加する。 ソースコード AluminiumMod.java package tutorial.aluminiummod; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.registry.GameRegistry; @Mod(modid = "AluminiumMod", name = "Aluminium Mod", version = "1.0.0") public class AluminiumMod { public static Item aluminium; //追加するブロックの宣言 public static Block blockAluminium; @EventHandler public void perInit(FMLPreInitializationEvent event) { aluminium = new Item() .setCreativeTab(CreativeTabs.tabMaterials) .setUnlocalizedName("aluminium") .setTextureName("aluminiummod aluminium"); GameRegistry.registerItem(aluminium, "aluminium"); //Blockを継承したクラスのインスタンスを生成し、代入する。 blockAluminium = new AluminiumBlock(Material.rock) //システム名の登録 .setBlockName("blockAluminium") //テクスチャ名の登録 .setBlockTextureName("aluminiummod aluminium_block"); //GameRegistryへの登録 GameRegistry.registerBlock(blockAluminium, "blockAluminium"); } } AluminiumBlock.java package tutorial.aluminiummod; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.creativetab.CreativeTabs; public class AluminiumBlock extends Block { public AluminiumBlock(Material material) { super(material); //クリエイティブタブの登録 this.setCreativeTab(CreativeTabs.tabBlock); //硬さの設定 this.setHardness(5.0F); //爆破耐性の設定 this.setResistance(10.0F); //ブロックの上を歩いた時の音を登録する。 this.setStepSound(Block.soundTypeMetal); //回収するのに必要なツールを設定する。 this.setHarvestLevel("pickaxe", 2); //明るさの設定 this.setLightLevel(0.0F); } } 解説 Block minecraftのブロックはすべてこのクラスを継承している。 modで追加するブロックもこのクラスを継承することになる。 コンストラクタ(Material material) そのブロックのマテリアルを設定する。 Materialにまとめれているので確認されたし。 Block setBlockName(String name) ブロックのシステム名を登録するメソッド。 Block setBlockTextureName(String name) ブロックのテクスチャを登録するメソッド。 アイテムと同様。 Block setCreativeTab(CreativeTabs tab) ブロックをクリエイティブタブに登録するメソッド。 アイテムと同様。 Block setHardness(float hardness) ブロックの硬さを設定する。 数値を上げると硬くなる。 黒曜石は50.0F。金・ラピスラズリ以外の圧縮ブロックが5.0F。net.minecraft.block.Blockを参照。 Block setResistance(float resistance) ブロックの爆破耐性を設定する。 数値を上げると耐えられる爆発力が高くなる。 黒曜石は2000.0F。圧縮ブロックは10.0F。こちらもnet.minecraft.block.Blockを参照。 Block setStepSound(StepSound sound) ブロックの上を歩いたり、破壊したりしたときになる音の種類を設定する。 void setHarvestLevel(String type, int level) typeで適正ツールの種類を指定、levelでレベルを指定する。 レベルは高いほど要求するツールが強力なものになる。 Block setLightLevel(float level) ブロックの光度を設定する。 ここで渡した値に15をかけたものが光源レベルになる。 0.0~1.0以外は無効。 GameRegistry Block registerBlock(Block block, String name) GameRegistryに追加ブロックを登録するメソッド。 使用例 オファレンブロックを追加する部分。 メタデータなどを使っている箇所は省略した。 +オファレンMOD OfalenModCore.java package nahama.ofalenmod; /*略*/ /**@author Akasata Nahama*/ @Mod(modid = OfalenModCore.MODID, name = OfalenModCore.MODNAME, version = OfalenModCore.VERSION) public class OfalenModCore { public static final String MODID = "OfalenMod"; public static final String MODNAME = "Ofalen Mod"; public static final String VERSION = "[1.7.10]1.0.0"; /*略*/ /**最初に行われる処理。アイテム・ブロックの追加などを行う*/ @EventHandler public void preInit(FMLPreInitializationEvent event) { /*略*/ //ブロックを設定するメソッドを実行 OfalenModBlockCore.registerBlock(); /*略*/ } /*略*/ } OfalenModBlockCore.java package nahama.ofalenmod.core; /*略*/ public class OfalenModBlockCore { /*略*/ public static Block blockOfalen; /*略*/ /**ブロックを設定する*/ public static void registerBlock () { /*略*/ blockOfalen = new OfalenBlock() .setBlockName("blockOfalen") .setBlockTextureName("ofalenmod ofalen_block-"); GameRegistry.registerBlock(blockOfalen, ItemOfalenBlock.class, "blockOfalen"); /*略*/ } } OfalenBlock.java package nahama.ofalenmod.block; /*略*/ public class OfalenBlock extends Block { /*略*/ public OfalenBlock() { super(Material.rock); this.setCreativeTab(OfalenModCore.tabOfalen); this.setHardness(7.5F); this.setResistance(15.0F); this.setStepSound(Block.soundTypeMetal); this.setLightLevel(1.0F); this.setHarvestLevel("pickaxe", 3); } /*略*/ } このままテストプレイをしてみると、テクスチャがない状態ではピンクと黒のデフォルトテクスチャになってしまう。 また、名前も、tile.blockAluminium.nameとなる。 これらの解決方法は次回。 コメント この項目に関する質問などをどうぞ。 アルミニウムモッドの時のブロック作成法はないのですか。 - # 2015-07-04 14 49 30 (7月2日までのこのページのソースコードがみたいです。) - # 2015-07-04 14 51 54 ご意見ありがとうございます。現在修正、もしくは併記予定です。 - Tom Kate 2015-07-05 12 22 45 併記する形で修正いたしました。 - Tom Kate 2015-07-05 13 27 24 とても見やすくなってよかったです。ありがとうございます。 - # 2015-07-05 14 46 28 ブロックの面によってテクスチャを変えるにはどうしたらよいのでしょうか - 名無しさん 2015-07-05 20 20 18 ご意見ありがとうございます。使えるメソッドのgetIcon と registerBlockIconsに追記いたしました。 - Tom Kate 2015-07-06 19 56 48 一時的に削除します。「メタデータを持つブロックの追加」で触れるよう修正する予定です。 - 赤砂蛇凪浜 2015-07-10 21 12 56 遅くなりましたが、修正が完了しました。 - 赤砂蛇凪浜 2015-07-23 12 35 35 申し訳ありません blockAluminium = new AluminiumBlock(Material.rock) の部分でなぜかいつもAluminiumBlockのところにエラーが付きますどうすればよいでしょうか?丸コピペしたソースコードを使ってもそうなります - 名無しさん 2015-09-19 15 28 50 クラッシュレポートをクラウドサービスか何かにおいていただいて、urlを送っていただくことはできますか? - Tom Kate 2015-09-19 15 59 11 クラッシュレポートを見せていただければ、こちらで対応いたします。 - Tom Kate 2015-09-19 15 59 49 net.minecraft.block.Blockを参照 と書かれているのですが、どうやって参照するのですか? - 名無しさん 2015-11-01 17 26 38 AluminiumBlock.javaをeclipse上で開き、...extends Block {...のBlockにカーソルを合わせてF3を押せば、Block.classを表示することができます。Blockにはバニラのブロックを追加している部分があるので、そこを見れば、バニラのブロックがどういう設定をされているかを知ることができます。 - 赤砂蛇凪浜 2015-11-04 19 23 57 ブロックを複数追加し、クリエイティブタブも参考にさせていただき作成できました。ですが、ブロック1、ブロック2と数を増やしていくとタブ内での並び順がバラバラになってしまいます。この場合どうすればよいのでしょうか? - 名無しさん 2016-03-05 20 30 20 forge側の不具合で、既存のワールドのクリエイティブタブにアイテム・ブロックを追加すると順序がばらばらになってしまいます。新しくワールドを作り直すと正しい順で表示されると思います。お試しください。 - 赤砂蛇凪浜 2016-03-06 09 15 21 返信ありがとうございます。ワールドを再生成しましたが直りませんでした。。何か設定し忘れているのでしょうか……。ブロックの並び順はブロックIDで決められているのですよね? - 名無しさん 2016-03-07 19 11 47 はい。ブロックIDはMOD側から指定することができないため、基本的にGameRegistryに登録した順ですね。 - 赤砂蛇凪浜 2016-03-07 20 38 17 多分、そこが自分は理解できてないと思うんです。登録順を並べるにはどうすればいいのでしょう?また、registerBlock(X, "Y");このXとYはどういう値にすればうまく並べれるのでしょうか。今は - 名無しさん 2016-03-07 21 40 26 (○○1, "1")、(○○2, "2")という感じになっています - 名無しさん 2016-03-07 21 41 41 おそらく、GameRegistry.registerBlockを呼び出した順だと思われます。 - 赤砂蛇凪浜 2016-03-08 21 37 25 呼び出し順を変える方法を教えて頂きたいです! - 名無しさん 2016-03-09 23 14 39 コード内で記述する順を変えるだけです。 - 赤砂蛇凪浜 2016-03-10 19 21 04 記述する順番はしっかりならべてるんだけどなぁ・・・。どうしても解決できません。。。メタブロックの追加だとうまく表示できたのでそちらに切り替えることにします。初心者に丁寧に教えていただいてありがとうございました!(涙) - 名無しさん 2016-03-13 20 55 45 基本的にできないことはわかっていることを前提として置いて質問します。何か裏技的な形でブロックid - anatawa12 2016-12-16 01 01 27 続き 裏技的な形でブロックidを指定することはできませんか? - anatawa12 2016-12-16 01 03 10 私達も試したことがないためはっきりとしたことは言えません。すみません。以下は軽く調べてみた結果で、間違っている可能性がありますので、ご了承ください。Forgeのシステムに入り込む形で指定することは可能かもしれませんが、簡単ではないと思います。Forgeのブロック追加処理は、GameRegistryからGameData、FMLControlledNamespacedRegistryを経由して行っているようです。ブロックIDは、GameDataやFMLControlledNamespacedRegistryでItem IDとの対応を見ながら決定しているようです。GameData.getMain()がprotectedに指定されているため、代替メソッドを作ろうとしたらそこで詰まりました。 - 赤砂蛇凪浜 2016-12-17 18 26 34 返信ありがとうございます やっぱり難しいですよね 1.7にはたを1.8のidで追加するmodを作ろうと思ったのですが、、 - anatawa12 2016-12-22 15 51 48 質問です。レッドストーンブロックのようにブロックをレッドストーン動力源にするにはどうすればいいのでしょうか? - 名無しさん 2017-01-07 16 00 06 レッドストーンブロックのクラスであるBlockCompressedPoweredを見るとわかると思いますが、以下のようにすればよいです。canProvidePowerをオーバーライドし、常にtrueを返す。isProvidingWeakPowerをオーバーライドし、常に15を返す。 - 赤砂蛇凪浜 2017-01-10 16 06 40 解決しました!! もうひとつ質問なんですけどブロックが光を透過するようにするにはどうすればいいのでしょう。 - 名無しさん 2017-01-11 20 39 31 こっちも解決しました!! .setLightOpacityというメソッドを使いました。 - 名無しさん 2017-01-14 15 12 24 このブロックを階段にするにはどうすればいいですか? - 名無しさん 2017-02-04 16 05 17 返信が遅くなってしまい申し訳ありません。今後チュートリアルを作成する予定です。また、単純な階段ならば、BlockStairsのインスタンスを生成することで実装できます。以下、そのサンプルです。perInitに追記すれば動作します。stairsAluminium = new BlockStairs(blockAluminium, 0).setBlockName("stairsAluminium").setBlockTextureName("aluminiummod aluminium_block");stairsAluminium.setCreativeTab(CreativeTabs.tabBlock);stairsAluminium.setHarvestLevel("pickaxe", 2);stairsAluminium.useNeighborBrightness = true;GameRegistry.registerBlock(stairsAluminium, "stairsAluminium"); - 赤砂蛇凪浜 2017-02-23 17 46 40 名前
https://w.atwiki.jp/bullet37/pages/88.html
前ページ次ページHL2Mod/Mod File Date Dec 24th, 2008 Rating 7 kz_freezing_ridge Maps Image Map Name Course Length ref() kz_afterdark Long ref() kz_aim_flareworld ref() kz_asteroid_field kz_beginnerblock Short kz_bhop_arctic Short kz_bhop_backalley Short ref() kz_bhop_cartooncastle Shor ref() kz_bhop_hangman ref() kz_bhop_kashgar ref() kz_bhop_ocean ref() kz_bhop_ravine ref() kz_bhop_shrubhop ref() kz_bhop_tiles ref() kz_brooklyn ref() kz_cathedral ref() kz_cathedral_ez kz_caulis Medium ref() kz_caverns_deep kz_cellblock Medium ref() kz_cityswingers kz_cliffhanger Medium ref() kz_cmfrb kz_computer Medium ref() kz_cookbook ref() kz_cookbook_ez ref() kz_crate_delight ref() kz_cube ref() kz_dance ref() kz_date ref() kz_date2 ref() kz_deathrow kz_debod Medium ref() kz_fortress ref() kz_fortress_ez ref() kz_fragmania kz_freezing_ridge Medium ref() kz_ghosttown_ez ref() kz_invasion ref() kz_karnak ref() kz_longjumps ref() kz_man_madness2 ref() kz_mausolus ref() kz_maze_wickedgarden ref() kz_metro ref() kz_minimania ref() kz_mix_journeys ref() kz_mix_piraraa ref() kz_mix_sickness ref() kz_oakvalley ref() kz_panama ref() kz_quadrathon ref() kz_refinery_east ref() kz_refinery_ez ref() kz_silo Medium ref() kz_silo_ez ref() kz_sliderace_city ref() kz_station ref() kz_still ref() kz_stranded ref() kz_surf_protraining ref() kz_surfcrazy ref() kz_testlab ref() kz_thehills ref() kz_trippin ref() kz_trippin_sp ref() kz_tunnels ref() kz_tutorial tags HL2Mod_MultiPlayer HL2Mod_Source SDK Base HL2Mod_Single Player
https://w.atwiki.jp/akasatanahama/pages/66.html
概要 新しいクリエイティブタブを追加する。 ソースコード AluminiumMod.java package tutorial.aluminiummod; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.registry.GameRegistry; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; @Mod(modid = AluminiumMod.MODID, name = AluminiumMod.MODNAME, version = AluminiumMod.VERSION) public class AluminiumMod { public static final String MODID = "AluminiumMod"; public static final String MODNAME = "Aluminium Mod"; public static final String VERSION = "1.0.0"; public static CreativeTabs tabAluminium = new AluminiumTab("Aluminiumtab"); public static Item aluminium; @EventHandler public void perInit(FMLPreInitializationEvent event) { aluminium = new Item() .setCreativeTab(AluminiumMod.tabAluminium) .setUnlocalizedName("aluminium") .setTextureName("aluminiummod aluminium"); GameRegistry.registerItem(aluminium, "aluminium"); } } AluminiumTab.java package tutorial.aluminiummod; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; public class AluminiumTab extends CreativeTabs { public AluminiumTab(String label) { super(label); } @Override public Item getTabIconItem() { return AluminiumMod.aluminium; } } 解説 CreativeTabs コンストラクタ(String label) 引数は表示されるクリエイティブタブの名前。 言語ファイルに itemGroup.Aluminiumtab=アルミニウム と記入すれば設定できる。 Item getTabIconItem() クリエイティブタブのアイコンとして表示するアイテムを返す。 オファレンMODでは、このメソッドを呼び出しているItemStack getIconItemStack()をオーバーライドすることでメタデータを変えている。 使用例 オファレンMODのクリエイティブタブを追加している部分。 +オファレンMOD OfalenModCore.java package nahama.ofalenmod; /*略*/ /** @author Akasata Nahama */ @Mod(modid = OfalenModCore.MODID, name = OfalenModCore.MODNAME, version = OfalenModCore.VERSION) public class OfalenModCore { public static final String MODID = "OfalenMod"; public static final String MODNAME = "Ofalen Mod"; public static final String VERSION = "[1.7.10]1.0.0"; /*略*/ /** 追加されたクリエイティブタブ */ public static final CreativeTabs tabOfalen = new OfalenTab("ofalentab"); /*略*/ } OfalenTab.java package nahama.ofalenmod.creativetab; import java.util.Random; import nahama.ofalenmod.core.OfalenModItemCore; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; public class OfalenTab extends CreativeTabs { private Random random = new Random(); private int count = 0; private int meta = -1; public OfalenTab(String label) { super(label); } /** アイコンの設定 */ @Override @SideOnly(Side.CLIENT) public ItemStack getIconItemStack() { if (count 1) { count = 100; meta++; if (meta 3) meta = 0; } else { count--; } return new ItemStack(OfalenModItemCore.ofalen, 1, meta); } @Override @SideOnly(Side.CLIENT) public Item getTabIconItem() { return null; } } コメント この項目に関する質問などをどうぞ。 タブをブロックにするときはどこをどのように変えれば良いのでしょう - さくら 2016-04-04 02 36 45 getTabIconItemの戻り値をItem.getItemFromBlock(block)にするか、getIconItemStackをオーバーライドするとできるかと思います。 - 赤砂蛇凪浜 2016-04-04 07 45 27 ありがとうございます! - さくら 2016-04-05 02 43 20 名前
https://w.atwiki.jp/gameswiki/pages/49.html
- Mod名 備考 Fallout 4 Project Arroyo Fallout 2をFallout 4で再現するMod Fallout 4 Capital Wasteland Fallout 3(Washington DC)をFallout 4上で再現するMod Fallout 4 New Vegas Fallout New Vegas(ラスベガス近郊)をFallout 4で再現するMod Fallout 4 London ロンドン Fallout Miami マイアミ Fallout Cascadia シアトル
https://w.atwiki.jp/eg-memo/pages/307.html
Moddingしてもらい、今後のマッピング時に気を付けることを書いたメモ書き程度のページです。 全ての曲に当てはまるわけではないです。 Moddingで指摘を受けたことについて KOAN Sound - Hydroplane ヒットサウンドに関すること mp3ファイルについて カスタムヒットサウンドを使用しないプレイヤーに関すること Moddingで使った&使われた英単語、フレーズ集 英単語 英文 KOAN Sound - Hydroplane ◆ヒットサウンドに関すること 今回、Aメロに入る前(動画1 07~1 29)は音量45%でマッピングをしていましたが、このような指摘を頂きました。 imageプラグインエラー ご指定のURLはサポートしていません。png, jpg, gif などの画像URLを指定してください。 +訳 45%はほとんど気付かないので、タイミングポイントのボリュームを少し増やします 曲の雰囲気にあわせてバスドラムをsoft-hitnormalに、スネアをsoft-hitfinishに当てていました。 そのためバスドラムを聞かそうと思って音量を単純に上げると今度はスネアの音が大きく目立ってしまいます。 スネアの音が目立ちはするが、「85%?ではなく65%にすべきか?」と質問しました。 するとDeviousPanda氏より助言、救いの手が! +訳 ええ、キアイ時間を放棄しているセクションのボリュームを55%に、キアイ時間を65%にしたセクションのボリュームを 今のところ目立たないように増やします。スネアは大きすぎますが、主にあなたが私の中で指摘したようなメロディーを フォローするために使用しているためです。他の投稿、HSを作り直すと、スネアはほとんど目立たなくなる どうやら、私は曲のシンセの音にあわせてスネアを使っていたので、 音付けをし直したらスネアの音が大きくても目立たなくなるそう。 むしろ、スネアを使う量が多いためスネアが目立つということだそうです! 訳でもある「他の投稿」とは下記のこと。 imageプラグインエラー ご指定のURLはサポートしていません。png, jpg, gif などの画像URLを指定してください。 +訳 スネアヒットサウンドの使用は実際には曲と一致しません。スネアは、キアイの2/1ティックごとにのみ存在し、 01:29:943(2)-01:30:640(5)-01 31のようなパターンになります。:338(7)-などですが、HSは1/1ティックごとにスネアしますが、 その後のキアイセクションでは、スネアヒットサウンドを使用してシンセのメロディーをフォローしているように見えます 02:15:989(5,6,1,2 、3)-など、実際には最初のkiaiとして2/1のスネアリズムがまだある場合-メロディ(ソフトホイッスルまたはそのようなもの)に 続く別のサウンドサンプルを見つけて、スネアを使いすぎないようにする必要があります。 長いですけど、要は曲では1/2ごと(1小節の中の2,4つ目の白線)にスネアの音があるのでそこにあわせること、 それから1/1ごと(1小節の中の4つの白線)にスネアの音を使っていたので、スネアに変わる別のヒットサウンドサンプルを探すことの2点。 imageプラグインエラー ご指定のURLはサポートしていません。png, jpg, gif などの画像URLを指定してください。この選択しているオブジェクトの始点にスネアの音を付けていたのです。 (そうでない箇所もあるが、ほとんどがそう) これでは音量を上げると必然とスネアの音がやたらと目立つわけです。 私は使っていなかったsoft-whistleにキックの音をあて、1小節の1,3つ目の白線にキックの音を付けました。 そして、2,4つ目の白線にはスネアの音を付けることで、曲とあった自然な感じに。 参考になるポイント 1.スネアの音は使いすぎず、曲にあうように。(1小節の内、2,4つ目の白線等に) 2.キックの音を追加して、キック→スネアとなるように音付けする。 3.音量は45%では小さいため、もう少し大きい音量を使用する。 当たり前のことで、曲によって当てはまらないかもしれないですが、そういうのが大事だと感じました。 ◆mp3ファイルについて 私はfeatured artistより曲をダウンロードしマッピングしていました。 最初、マッピングを終了しアップロードしようとしたのですが、容量5MB超えでアップロードできませんでした。 そこでAudacityを使って約12MBあるmp3を約4.5MBまでサイズダウンしました。 192kbps→64kbpsへと変更となり、音質としては結構悪くなった感じはありませんでした。 でもそれでやっとこさアップロードできたのですが、そこでこんなMODを頂きました。 imageプラグインエラー ご指定のURLはサポートしていません。png, jpg, gif などの画像URLを指定してください。 +訳 mp3は完全に壊れていますか、それとも私ですか? どうやら、それが音質がかなりひどく聞こえる人がいたみたいです。 改めて確認としてチャット飛ばしたところ… imageプラグインエラー ご指定のURLはサポートしていません。png, jpg, gif などの画像URLを指定してください。 +訳 うーん tbh 1秒も見なかった mp3は私にとって本当にレイプです 確かにプレイ可能です マップは素晴らしいようですが、本当に音質をサポートすることはできません 音質がある程度の品質を保っているというのもrankedに必要だと感じました。 imageプラグインエラー ご指定のURLはサポートしていません。png, jpg, gif などの画像URLを指定してください。 +訳 私はあなたの地図を正しいmp3でリタイミングしました マップの説明にクレジットが必要です:p 至れり尽くせり、mp3を用意していただきました。 featured artistにmp3ファイルはあるので、それを利用したのでしょう。 そのmp3ファイルを利用してアップロードすることでこの方のMODは解決しました。 しかし、容量5MB制限のエラーが出たことが今でも謎です…。 Q.Ranking Criteria等を確認して、mp3の品質の制限があるのか確認して記載します。 2020年4月5日追記 osu!のRanking Criteriaを確認し、やはり制限がありましたのでここに記載します。 imageプラグインエラー ご指定のURLはサポートしていません。png, jpg, gif などの画像URLを指定してください。 +訳 マップセットのオーディオファイルは、.mp3ファイルを使用し192kbps以下である必要があります。 引用 Ranking Criteria - Audio Ruleより 上限は192kbpsまでのようですが、下限についての言及はないようです。 ただし、このようなルールがありました。 imageプラグインエラー ご指定のURLはサポートしていません。png, jpg, gif などの画像URLを指定してください。 +訳 オーディオファイルとヒットサウンドファイルは、適切な品質である必要があります。 動画サイトから録音するのではなく、ダウンロードリンク等を作成者が配布してるもの等、できる限り最高品質のものを使用してください。 オーディオファイルがリリースされたときの音量を正規とし、今よりも高いビットレートにエンコードしないでください。 引用 Ranking Criteria - Audio Ruleより 今回は容量を気にして64kbpsまで落としたわけですが、このルールを鑑みるとそれは適切ではなかったのかもしれません。 とても重大なことを指摘いただけました。 ◆カスタムヒットサウンドを使用しないプレイヤーに関すること 私はDeviousPanda氏のModdingを受け、ヒットサウンドを全て修正し直したわけですが後日、BNのNamki氏よりModdingを頂きました。 imageプラグインエラー ご指定のURLはサポートしていません。png, jpg, gif などの画像URLを指定してください。 +訳 プレーヤーがカスタムのものを使用しない場合、すべての仕上げをクラップで対応するサンプルに置き換える必要があります。 これらのすべての仕上げは大量のノイズを発生させ、全体的にかなり乱雑で不適切に聞こえるためです 私の不得手な分野、ヒットサウンドに関するModding、とてもありがたいです。 内容は、soft-hitfinishにスネアの音、soft-hitclapにシンセのメロディをフォローする音を使用していました。 一方でカスタムヒットサウンドを無効にしているプレイヤーを考えた時、スネアとして使用していたsoft-hitfinishは、 シンバル等の大きな音に変わってしまい、とても不快なことに聞こえてしまうというもの。 なるほど、私はカスタムヒットサウンドを無効にしていないので、そういう発想が出てきませんでした。 確かに彼らのためにも配慮すべき事項であり、Rankedを目指すなら重大なことでした。 趣味でRanking Criteriaを翻訳していてもその内容がガイドラインに載っていました。 imageプラグインエラー ご指定のURLはサポートしていません。png, jpg, gif などの画像URLを指定してください。 +訳 ヒットサウンドでSoft、NormalのFinishを頻繁に使用されるカスタムヒットサウンドで置き換えることは避けて下さい。 これらのFinishを使用してスネア、キック等で曲のメロディを表現すると、カスタムヒットサウンドを無効するプレイヤーにとって、不快に聞こえる場合があります。 スネア、キック等は頻繁に使用されるため、WhistleやClapへの使用が推奨されます。 ただしosu!Taikoは例外で、それぞれのモードのヒットサウンドに関するRule、Guidelineがあります。 引用 Ranking Criteria - Audio Guideline マッピングするときにはこのガイドラインは知りませんでした。 これを見て、ひとつLasse氏のヒットサウンドをまとめたzipファイルと解説があるのを思い出しました。 Tweet 解説が英文なので、また翻訳してページを作成しようと思います。 Tick関連 00 33 754 (3) - I might map this slider like this instead so that it falls on the white tick (which does have a prominent sound). Google訳 代わりに、このスライダーをこのようにマッピングして、白い目盛り(目立つ音がする)に収まるようにします。